Skip to main content
Sequence Wallets are created using the Factory contract, when called it creates child MinimalUpgradeableProxies contracts, which are in essence the “boot” code of all Sequence wallets.

Factory API

deploy

Creates a child MinimalUpgradeableProxy using CREATE2, the proxy initially points to the provided _mainModule. No initialize code is executed.

Parameters:

Return Values:

Unsanitized input
The Factory contract does not check if the provided _mainModule is a valid Sequence wallet implementation, or if _salt is a valid Sequence configuration.
Using invalid parameters will result on a proxy contract that may not be usable, and could result in loss of funds.

Counter factual addresses

Sequence wallets are counter-factual by design, this means that the wallet’s address can be known before the wallet is deployed; any two combinations of the mainModule and salt values will result in the same wallet address. This property alongside the use of NanoUniversalDeployer or UniversalDeployer is the reason why Sequence wallets can obtain the same address on multiple chains.
Gas-free wallet creation
Sequence wallets are 100% counterfactual, meaning that funds can be safely transferred to the wallet’s address without the need for calling the deploy function. Deploying the wallet is only required before the first transaction is sent from the wallet.